package com.xbongbong.saas.model;

import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.IModel;
import com.xbongbong.saas.domain.entity.WorkReportCcEntity;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author long.rao
 * @version v1.0
 * @date 2019/2/1 15:07
 * @since v1.0
 */
public interface WorkReportCcModel extends IModel<WorkReportCcEntity> {
    /**
     * 工作报告抄送人数据插入
     * @param entity 工作报告抄送人实体
     * @throws XbbException 异常
     * @return Integer
     * @author long.rao
     * @date 2019-02-01 15:48
     */
    @Override
    Integer insert(WorkReportCcEntity entity) throws XbbException;
    /**
     * 工作报告抄送人数据更新
     * @param entity 工作报告抄送人实体
     * @author long.rao
     * @date 2019-02-01 15:48
     * @throws XbbException 异常
     * @return Integer
     */
    @Override
    Integer update(WorkReportCcEntity entity) throws XbbException;
    /**
     * 工作报告抄送人数据查询多个
     * @param param 参数
     * @author long.rao
     * @date 2019-02-01 15:48
     * @return List<WorkReportCcEntity>
     */
    @Override
    List<WorkReportCcEntity> findEntitys(Map<String, Object> param);
    /**
     * 工作报告抄送人数据查询条数
     * @param param 参数
     * @author long.rao
     * @date 2019-02-01 15:48
     * @return Integer
     */
    @Override
    Integer getEntitysCount(Map<String, Object> param);
    /**
     * 工作报告抄送人数据单条查询
     * @param key 主键ID
     * @param corpid 公司ID
     * @author long.rao
     * @date 2019-02-01 15:48
     * @return Integer
     */
    WorkReportCcEntity getByKey(Long key, String corpid);
    /**
     * 删除单条工作报告抄送人
     * @param key 主键ID
     * @param corpid 公司ID
     * @author long.rao
     * @date 2019-02-01 15:48
     * @return Integer
     */
    Integer deleteByKey(Long key, String corpid);

    /**
     * 删除工作报告抄送人
     * @param reportId 工作报告id
     * @param corpid 公司id
     * @author long.rao
     * @date 2019-02-18 21:11
     */
    Integer deleteByReportId(@Param("reportId") Long reportId, @Param("corpid") String corpid);

    /**
     * 批量删除
     *
     * @param delIds
     * @param corpid
     * @author long.rao
     * @date 2019-02-21 17:04
     */
    Integer deleteBatch(@Param("delIds") List<Long> delIds, @Param("corpid") String corpid);

    Integer insertBatch(@Param("list") List<WorkReportCcEntity> list) throws XbbException;

    /**
     * 通过工作报告获取抄送人
     * @param reportId 工作报告id
     * @param corpid 公司id
     * @return 抄送人列表
     */
    List<WorkReportCcEntity> getListByReportId(Long reportId, String corpid);

    Integer dataConsistencyUpdateUser(String corpid, String userId, String userName);
}
